iT邦幫忙

2022 iThome 鐵人賽

DAY 14
0
自我挑戰組

老菜雞挑戰30天學爆Unity&C#會成功嗎?...系列 第 14

【Day14】老菜雞學下樓梯遊戲之新增分數UI(Unity UI的應用)

  • 分享至 

  • xImage
  •  

前言

今天我們要學習如何增加顯示分數在遊戲裡,一樣用昨天介紹到的UI系統。


增加分數UI

  • 首先,現在左側Hierarchy欄點右鍵新增UI→Text(命名為Score)
    https://ithelp.ithome.com.tw/upload/images/20220926/20152411xLu96RxqZ1.jpg
    這個UI我這邊把它編輯為「Level 0」用來顯示現在到第幾level,並改變字體大小及顏色(這邊也可以自己決定想改成什麼)
    https://ithelp.ithome.com.tw/upload/images/20220926/20152411K5E3uOqRoh.jpg
    再到Player.cs新增TextMeshProUGUI物件名為scoreText,記得要使用TextMeshPro資料型態時需引入TMProusing TMPro
[SerializeField]  TextMeshProUGUI scoreText;

回到Unity就會發現Player(Script)就會多個ScoreText顯示在介面上,接著需將剛剛才新增的Score(UI)掛載到這上面↓

  • 接著在Player.cs繼續宣告scorescoreTime,分別「記錄現在到第幾level」及「紀錄現在過了多久時間」,並在Start方法裡初始化。
int score;//紀錄現在到第幾level
float scoreTime;//紀錄現在過了多久時間
void Start()
    {
        Hp = 10;
        score = 0;
        scoreTime = 0;
    }
  • 最後新增一個名為UpdateScore的方法來更新分數(level)。
void UpdateScore()
    {
        scoreTime +=Time.deltaTime;//用Time.deltaTime來計算時間,因為它是每次Update方法被呼叫到的間隔時間
        if(scoreTime>2f)  //只要scoreTime超過2秒,就把分數+1更新到文字上,並歸零時間
        {
            score++;
            scoreTime = 0f;
            scoreText.text = "Level" + score.ToString();
        }
    }

記得Update方法裡也要呼叫這個函式

void Update()
    {
        if(Input.GetKey(KeyCode.D)) {
            transform.Translate(speed*Time.deltaTime,0,0);
        }
        else if(Input.GetKey(KeyCode.A)) {
            transform.Translate(-speed*Time.deltaTime,0,0);
        }
        UpdateScore();
    }

試玩~~

可以發現上方Level有不斷更新喔!


心得

今天是接續文字UI的應用,只是加上程式碼來更新它,學習到現在已經漸漸把一些Unity的東西學會了,大部分都是增加物件、UI等等再加上程式碼來執行它們~

  • 參考網址:https://www.youtube.com/watch?v=nPW6tKeapsM&ab_channel=GrandmaCan-%E6%88%91%E9%98%BF%E5%AC%A4%E9%83%BD%E6%9C%83

  • 音效、圖片 : 遊戲素材
    (素材由安德斯提供,感謝大大/images/emoticon/emoticon41.gif)


上一篇
【Day13】老菜雞學下樓梯遊戲之新增血量的UI-Unity UI的應用
下一篇
【Day15】老菜雞學下樓梯遊戲之轉向問題-Unity SpriteRenderer Flip
系列文
老菜雞挑戰30天學爆Unity&C#會成功嗎?...30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言